package com.heima.es.config;

import lombok.Getter;
import lombok.Setter;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Getter
@Setter
@Configuration
//这个注解用于将配置文件中的属性绑定到这个类的字段上
@ConfigurationProperties(prefix = "elasticsearch")
//主要功能是配置一个与 Elasticsearch 连接的 Spring Bean
public class ElasticSearchConfig {
    //这两个字段用于存储 Elasticsearch 服务器的主机地址和端口号
    //通过 @ConfigurationProperties 的自动绑定功能，这些字段的值会从配置文件中读取
    private String host;
    private int port;

    //将该方法的返回值注册成为被spring容器管理的bean对象
    @Bean
    public RestHighLevelClient client(){
        //使用 RestClient.builder() 创建了一个 RestClient 实例的构建器
        return new RestHighLevelClient(RestClient.builder(
                //注册Elasticsearch 服务器的主机地址、端口号以及协议，相当于带参构造方法
                new HttpHost(
                        host,
                        port,
                        "http"
                )
        ));
    }
}
